ECC Slides
Example - Explicit
ABCDEFGX3Y3Z3=Z1⋅Z2=A2=X1⋅X2=Y1⋅Y2=d⋅C⋅D=B−E=B+E=A⋅F⋅((X1+Y1)⋅(X2+Y2)−C−D)=A⋅G⋅(D−C)=c⋅F⋅G Example - Registers
R1,R2,R3R4,R5,R6R7,R8R3R7R8R1R2R7R7R7R7R8R8R2R2R3R1R3R2R3R1R3←X1,Y1,Z1←X2,Y2,Z2←undefined←R3⋅R6←R1+R2←R4+R5←R1⋅R4←R2⋅R5←R7⋅R8←R7−R1←R7−R2←R7⋅R3←R1⋅R2←d⋅R8←R2−R1←R2⋅R3←R32←R3−R8←R3+R8←R2⋅R3←R3⋅R1←R1⋅R6←c⋅R3 Edwards Addition
(x1,y1)+(x2,y2)=(1+dx1x2y1y2x1y2+x2y1,1−dx1x2y1y2y1y2−x1x2) Edwards Homogeneous Equation
(X2+Y2)Z2=c2(Z4+dX2Y2) Edwards Law Transformation
x1y2+x2y1→(x1+y1)(x2+y2)−x1x2−y1y2
Projective Coordinates
(x,y)→(xZ,yZ,Z)
Any point (x,y) has infinite representations in the projective plane.
Points at infinity can be represented as (X,Y,0)
(3,5)→(15,25,5) (3,5)→(21,35,7)
Questions
What do you lose by using the additional constraints given?
Are performance numbers for DBL and ADD as you reported theoretical optimals?
Potentially there are more constraints that can be discovered, and I didn’t go into it but you can also get better performance by considering the cost of multiplications vs squarings. E.g. for twisted Edwards, the algorithm I gave was 10M + 1S, but there is an alternate algorithm provided in the same paper (https://eprint.iacr.org/2007/286.pdf) which is 7M + 5S. This alternate algorithm is faster if your hardware manages to perform a squaring in less than 75% the time of a multiplication.
That being said, I think in the general case these are probably at the optimal level for the curve forms we have currently. It seems that generally what happens is we get a new curve form, and then over the next few years we get some faster algorithms for it based on spotting clever re-arrangements and using new coordinate systems, and then we stop getting improvements. E.g. Edwards curves came out in 2007, and the algorithms which were introduced by Bernstein and Lange in the paper I mentioned earlier in the same year are still the fastest we have in the general case.